package com.cskaoyan.javase.string._0introduction;

/**
 * String类我们并不陌生，在这一节我们专门来学习一下String类的特点。
 * String类在Java中：
 *      1.处于java.lang包下，是Java语言的绝对核心类（在Java中找不到一个比它更常见、更常用的类了）
 *
 *      2.提供了字符串表示以及比较、查找、截取、大小写转换等各种针对字符串的操作。
 *      总之，在Java中，只要关系到字符串的相关操作，你大都可以找到类String，去实现你的需求 。这就是我们学习String这个类的目的。
 *
 * 特别注意：
 * 使用String类时尤其要注意导包问题，我们讲解的String是java.lang包下的String，该包下的类具有隐式的导包不需要程序员额外导包。
 * 但如果导错包，那就会导致诸如不能运行main方法之类的问题，这一点之前的课程中也强调过
 *了。
 *
 * 常见的public构造方法如下：
 * // 创建一个空的字符串对象，是长度为0的字符串，而不是null
 * public String()
 * // 把字节数组中的元素转换成字符串，字节数组中可以是字符，也可以是ASCII码值
 * public String(byte[] bytes)
 * // 同上，不过指定了开始下标和长度
 * public String(byte[] bytes,int offset,int length)
 * offset是偏移量,它实际上就是数组的起始下标
 * length就表示从起始下标的元素开始向后数元素的个数/长度(包括起始元素)
 *
 * // 同字节数组
 * public String(char[] value)
 * // 同上，不过指定了开始下标和长度
 * public String(char[] value,int offset,int count)
 *
 * // 套娃
 * public String(String original)
 *
 * @since 09:37
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // Java代码中双引号引起来的字符串就是一个String对象
        System.out.println("123".length());

        System.out.println(new String().length());

        byte[] arr = {97, 98, 99};
        String s = new String(arr);
        System.out.println(s);

        String s2 = new String(arr, 1, 1);
        System.out.println(s2);

        char[] arr2 = {'a', 'b', 'c'};
        System.out.println(new String(arr2));
        System.out.println(new String(arr2, 2, 1));

        System.out.println(new String("abc"));
    }
}
